package com.tbit.uqbike.service.business;


import com.tbit.uqbike.object.pojo.MemberFee;
import com.tbit.uqbike.object.pojo.MoneyData;
import com.tbit.uqbike.object.pojo.StatPark;
import com.tbit.uqbike.object.pojo.UserMember;
import com.tbit.uqbike.object.value.UserRcDetail;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author chenmengran
 * @Description: 会员费用设置
 * @date 2019\7\12 001214:28
 */
public interface MemberFeeService {
    /**
     * 添加会员费率
     *
     * @param memberFee
     */
    void add(MemberFee memberFee);

    /**
     * 更新会员费率
     *
     * @param memberFee
     */
    void update(MemberFee memberFee);

    /**
     * 查找会员费率
     *
     * @param accountId
     */
    List<MemberFee> find(Integer accountId, Integer rowCount, Integer pageNO);

    /**
     * 删除会员费率
     *
     * @param memberFeeId
     */
    void del(Integer memberFeeId, Integer accountId);

    /**
     * 查询总数
     *
     * @param accountId
     * @return
     */
    Integer queryCount(Integer accountId);

    /**
     * 置为失效
     *
     * @param memberFeeId
     */
    void edit(Integer memberFeeId, Integer accountId);

    /**
     * 用户购买免押套餐记录
     *
     * @param
     * @return
     */
    List<UserMember> userMemPage(Integer userId, Integer rowCount, Integer pageNO);

    /**
     * 用户购买免押套餐记录总数
     *
     * @param
     * @return
     */
    Integer userMemCount(Integer userId);

    /**
     * 统计免押订单总数
     */
    Integer getMoneyByTime(List<Integer> accountIds, String startTime, String endTime, Integer type);

    /**
     * 订单按天统计或按月统计
     */
    List<StatPark> statByType(List<Integer> accountIds, String startTime, String endTime, Integer type);

    /**
     * 免押卡统计分页
     */
    List<UserRcDetail> getMemPage(Integer accountId, Integer type, Long startTime, Long endTime, Integer pageNO, Integer rowCount);

    /**
     * 免押卡统计分页总数
     */
    Integer getMemCount(Integer accountId, Integer type, Long startTime, Long endTime);

    /**
     * 免押卡统计导出
     */
    List<UserRcDetail> export(Integer accountId, Integer type, Long startTime, Long endTime);

    /**
     * 免押卡统计总金额
     */
    MoneyData getTotalMoney(Integer accountId, Integer type, Long startTime, Long endTime);

    /**
     * 免押卡分类统计购买记录
     */
    List<Map<String, Object>> memCountByType(HashMap<Object, Object> params, Integer accountId, Integer type, Long startTime, Long endTime);

    /**
     * 根据用户id和区域id集合购买免押套餐记录
     *
     * @param userId        用户id
     * @param accountIdList 区域id集合
     */
    UserMember userVipPageByAccountIdList(Integer userId, List<Integer> accountIdList);
}
